package com.springboot.common;

import lombok.Getter;
/**
 * 响应码枚举类
 *
 * @author zjb
 * @since 2025/10/16 20:46
 */
@Getter
public enum ResponseCode {

    // ===================== 成功相关 =====================
    SUCCESS("200", "操作成功"),  // 对应Result.success(data, message)的默认成功码
    SUCCESS_NO_CONTENT("204", "请求成功但无数据"),  // 对应Result.success(message)的默认成功码

    // ===================== 客户端错误 =====================
    BAD_REQUEST("400", "请求参数错误"),
    UNAUTHORIZED("401", "未授权（请先登录）"),
    FORBIDDEN("403", "权限不足，拒绝访问"),
    NOT_FOUND("404", "请求的资源不存在"),
    METHOD_NOT_ALLOWED("405", "不支持的请求方法"),

    // ===================== 服务器错误 =====================
    INTERNAL_ERROR("500", "服务器内部错误"),
    SERVICE_UNAVAILABLE("503", "服务暂时不可用"),

    // ===================== 自定义业务错误 =====================
    BUSINESS_ERROR("-1", "业务逻辑错误"),  // 对应Result.error(message)的默认错误码
    PARAM_VALID_ERROR("1001", "参数校验失败"),
    DATA_DUPLICATE("1002", "数据重复（如重复提交）"),
    RESOURCE_USED("1003", "资源正在被使用，无法删除");

    // 状态码（与Result的code类型一致，用String）
    private final String code;
    // 描述消息
    private final String message;

    // 构造方法（枚举构造器必须为private）
    ResponseCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
}
